<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of enquete
 *
 * @author Daniel Medeiros - ichigo_dan@hotmail.com
 */
class EnqueteAction extends ActionDefault {

    private $enqueteService;
    private $statusService;

    public static $VIEW_ENQUETE = "view/enquete/";

    
    function EnqueteAction() {

        parent::__construct();
        $this->setValueOutput("enqueteMenu", "current");
        $this->enqueteService = new EnqueteService();
        $this->statusService = new StatusService();
    }
    
    public function getView(){
        return EnqueteAction::$VIEW_ENQUETE;
    }

    public function cadastro() {
        $this->setValueOutput("enqueteSubmenu", "current");
        $this->show(EnqueteAction::$VIEW_ENQUETE . "cadastro.tpl");
    }
    
    public function salvar($enqueteBean) {
        
        if($enqueteBean->getEnqueteID() != 0){//editando
            $enquete = $this->enqueteService->buscarPorID($enqueteBean->getEnqueteID());
            $enqueteBean->setFim(date("d/m/y", strtotime('+'.$enqueteBean->getFim().' day', strtotime(Util::stringToDateTime($enquete->getInicio())))));
        }else{
            $enqueteBean->setFim(date("d/m/y", strtotime('+'.$enqueteBean->getFim().' day')));
        }

        $statusBean = $this->statusService->buscarPorID(Constantes::$ST_ENQ_ATIVA);
        $enqueteBean->setStatus($statusBean);
        
        $enqueteBean = $this->enqueteService->salvar($enqueteBean);
        parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_SUCCESS, "Operação Realizada Com Sucesso!!!"));
        parent::chain('RespostaAction.cadastro!enqueteID-'.$enqueteBean->getEnqueteID());

    }

    public function editar($enqueteID) {
        try{

            if($enqueteID <= 0){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Código da Enquete Não Encontrado!!!"));
                parent::voltar();
                return;
            }

            $enqueteBean = $this->enqueteService->buscarPorID($enqueteID);

            if($enqueteBean == null){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Enquete Não Encontrada!!!"));
                parent::voltar();
                return;
            }

            parent::setObjectOutput($enqueteBean);
            parent::show(EnqueteAction::$VIEW_ENQUETE."cadastro.tpl");

        }catch(Exception $ex){
            parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, $ex->getMessage()));
            parent::voltar();
        }
    }

    public function listar() {
        parent::setValueOutput('status', Util::arrayCombo($this->statusService->listar(0, Constantes::$STATUS_ENQUETE), 'statusID', 'descricao',' -- TODOS --'));
        $this->buscaListaPaginada();
    }

    public function tabela($pagina = 1, $inicio = "", $descricao = "", $statusID = -1) {
        $this->buscaListaPaginada($pagina, $inicio, $descricao, $statusID);
        parent::show('view/enquete/tabela.tpl');
    }

    public function buscar() {
        
    }

    public function excluir($enqueteID) {
        try{

            if($enqueteID <= 0){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Código da Enquete Não Encontrado!!!"));
                parent::voltar();
                return;
            }

            $enqueteBean = $this->enqueteService->buscarPorID($enqueteID);

            if($enqueteBean == null){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Enquete Não Encontrada!!!"));
                parent::voltar();
                return;
            }

            $enqueteBean->setStatus($this->statusService->buscarPorID(Constantes::$ST_ENQ_INATIVA));

            $this->enqueteService->salvar($enqueteBean);

            parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_SUCCESS, Constantes::$STR_MSG_SUCCESS));
            parent::chain('EnqueteAction.listar');

        }catch(Exception $ex){
            parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, $ex->getMessage()));
            parent::voltar();
        }
    }

    public function detalhes($enqueteID) {
        
    }

    private function buscaListaPaginada($pagina = 1, $inicio = "", $descricao = "", $statusID = -1){

        $enquetes = $this->enqueteService->listar($pagina, $inicio, $descricao, $statusID);
        $total = $this->enqueteService->total($inicio, $descricao, $statusID);

        parent::setValueOutput('enquetes', $enquetes);
        parent::setValueOutput('pagina', $pagina);
        parent::setValueOutput('numPaginas', Util::calculaNumPaginas($total));

    }

}

?>
